PHP 8.1 এ Enums (এনাম) ফিচারটি আনুষ্ঠানিকভাবে চালু করা হয়, যা কোডে একটি সীমিত সংখ্যক মান (values) এর একটি সেটকে নির্দিষ্ট করতে ব্যবহৃত হয়। Enums কে দুইটি প্রধান শ্রেণীতে ভাগ করা যায়: Backed Enums এবং Pure Enums। এই দুটি এনাম টাইপের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, যা তাদের ব্যবহারের ক্ষেত্রে নির্দিষ্ট পরিস্থিতিতে কার্যকরী হয়ে ওঠে।
Backed Enums
Backed Enums হল এমন ধরনের এনাম যেখানে প্রতিটি এনাম ভ্যালু একটি নির্দিষ্ট ধরনের ব্যাকড ভ্যালু (যেমন, string বা integer) ধারণ করে। অর্থাৎ, প্রতিটি এনাম ভ্যালু একটি ডাটা টাইপ দ্বারা সমর্থিত থাকে, যেমন একটি string বা integer।
Backed Enums এর সুবিধা:
- String বা Integer Value: প্রতি এনাম ভ্যালুর সাথে একটি মান (value) যুক্ত থাকে, যেটি একটি স্ট্রিং বা ইনটিজার হতে পারে। এই ধরনের এনাম আপনাকে কোডে ডাটা ভ্যালু স্টোর করতে এবং তা বিভিন্ন স্থানে ব্যবহার করতে দেয়।
- ট্রান্সলেশন বা স্টোরেজে সহজ ব্যবহৃত হতে পারে: যখন এনাম ভ্যালু ডাটাবেস বা অ্যাপ্লিকেশনে সংরক্ষণ করতে হয় বা স্ট্রিং আকারে ট্রান্সলেট করা দরকার, তখন Backed Enums সুবিধাজনক।
Backed Enums উদাহরণ:
<?php
enum Status: string {
case Pending = 'pending';
case Approved = 'approved';
case Rejected = 'rejected';
}
// Accessing the backed enum value
echo Status::Approved->value; // Output: approvedএখানে, Status নামক Backed Enum-এ প্রতিটি এনাম ভ্যালুর সাথে একটি স্ট্রিং মান রয়েছে।
Pure Enums
Pure Enums হল এমন ধরনের এনাম যেখানে প্রতিটি এনাম ভ্যালু শুধুমাত্র একটি চিহ্ন বা সিম্বল (symbol) হিসেবে থাকে এবং তার সাথে কোনো সংযুক্ত মান (string বা integer) থাকে না। এটি শুধু একটি ধরনের এনাম যেটি মানে বিশেষ কিছু প্রতিনিধিত্ব করে।
Pure Enums এর সুবিধা:
- ভ্যালু ছাড়া শুধুমাত্র সিম্বল: Pure Enums শুধুমাত্র প্রতিটি ভ্যালুর একটি স্বতন্ত্র সিম্বল ধারণ করে। এগুলোর মধ্যে কোনো ডাটা ভ্যালু বা স্ট্রিং থাকে না, এবং কেবলমাত্র তাদের আইডেন্টিফাইং সিম্বল (যেমন
Status::Pending) থাকে। - কোডে আরো পরিষ্কারতা: Pure Enums সাধারণত ভালো হয় যখন আপনি শুধুমাত্র ভ্যালুর আইডেন্টিফিকেশন করতে চান এবং কোনো নির্দিষ্ট মানের সাথে কাজ করার প্রয়োজন নেই।
Pure Enums উদাহরণ:
<?php
enum Status {
case Pending;
case Approved;
case Rejected;
}
// Accessing the pure enum value
$status = Status::Approved;
echo $status->name; // Output: Approvedএখানে, Status নামক Pure Enum-এ কোনো স্ট্রিং বা ইনটিজার মান নেই, কেবল একটি সিম্বল আছে, যা প্রতিটি এনাম ভ্যালুকে চিহ্নিত করে।
Backed Enums এবং Pure Enums এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Backed Enums | Pure Enums |
|---|---|---|
| ব্যাকড ভ্যালু | প্রতিটি এনাম ভ্যালুর সাথে একটি ব্যাকড ভ্যালু থাকে (স্ট্রিং বা ইনটিজার)। | শুধুমাত্র সিম্বল বা চিহ্ন থাকে, কোনো ডাটা ভ্যালু নেই। |
| ব্যবহার | ডাটাবেস বা স্টোরেজে স্ট্রিং বা ইনটিজার ভ্যালু ব্যবহার করতে সহায়ক। | শুধুমাত্র আইডেন্টিফিকেশন এবং লজিক্যাল পরিসরে ব্যবহৃত হয়। |
| মান | প্রতিটি এনাম ভ্যালুর একটি নির্দিষ্ট মান থাকে, যেমন স্ট্রিং বা ইনটিজার। | প্রতিটি এনাম ভ্যালু শুধুমাত্র একটি আইডেন্টিফাইং সিম্বল থাকে। |
| কোডে প্রসেসিং | এনাম ভ্যালু কোনো মান সহ ফেরত আসে। | শুধুমাত্র নাম বা সিম্বল অ্যাক্সেস করা হয়। |
| উদাহরণ | enum Status: string { case Pending = 'pending'; case Approved = 'approved'; } | enum Status { case Pending; case Approved; } |
উপসংহার:
Backed Enums এবং Pure Enums দুটোই PHP 8-এর শক্তিশালী ফিচার। যেখানে Backed Enums স্ট্রিং বা ইনটিজার ভ্যালু ব্যবহারের মাধ্যমে আরও বেশি নমনীয়তা এবং কার্যকারিতা প্রদান করে, Pure Enums শুধুমাত্র সিম্বল বা চিহ্ন ব্যবহার করে কোডের আরো পরিষ্কারতা এবং পড়াশোনার সুবিধা দেয়। উভয় ধরনের এনামের ব্যবহারের উপকারিতা নির্ভর করে আপনার প্রয়োজনের উপর, যেমন ডাটা ভ্যালু সংরক্ষণ বা শুধু চিহ্নের মাধ্যমে লজিক্যাল ব্যবহারের উদ্দেশ্যে।
Read more